<

iOSアプリ拡張機能の追加

iOS アプリ拡張機能を使用すると機能を拡張できます アプリの外で。アプリはホーム画面のウィジェットとして表示される場合があります。 または、アプリの一部を他のアプリ内で利用できるようにすることもできます。

アプリ拡張機能について詳しくは、こちらをご覧ください。Apple のドキュメント。

Flutter アプリにアプリ拡張機能を追加するにはどうすればよいですか?

Flutter アプリにアプリ拡張機能を追加するには、 拡張ポイントを追加する目標Xcode プロジェクトに追加します。

  1. 次のコマンドを実行して、プロジェクト内のデフォルトの Xcode ワークスペースを開きます。open ios/Runner.xcworkspaceターミナルウィンドウで Flutter プロジェクトのディレクトリ。
  2. Xcode で、選択しますファイル -> 新規 -> ターゲットメニューバーから。

  3. 追加するアプリ拡張機能を選択します。 この選択により、拡張機能固有のコードが生成されます プロジェクトの新しいフォルダー内。 生成されたコードとそれぞれの SDK について詳しく知るには 拡張ポイント。次のリソースを確認してください。Apple のドキュメント。

Flutter アプリはアプリ拡張機能とどのように連携しますか?

Flutter アプリは、同じものを使用してアプリ拡張機能と対話します。 UIKit または SwiftUI アプリとしてのテクニック。 含まれているアプリとアプリ拡張機能は直接通信しません。 デバイス ユーザーが拡張機能を操作している間、含まれているアプリが実行されていない可能性があります。 アプリと拡張機能は、共有リソースへの読み取りと書き込みができます。 より高いレベルの API を使用して相互に通信します。

より高いレベルの API の使用

一部の拡張機能には API があります。例えば、 のコアスポットライトフレームワークがアプリのインデックスを作成します ユーザーは Spotlight と Safari から検索できるようになります。のウィジェットキットフレームワークはホーム画面の更新をトリガーできます ウィジェット。

アプリが拡張機能と通信する方法を簡素化するには、 Flutter プラグインはこれらの API をラップします。 拡張機能 API をラップするプラグインを見つけるには、 チェックアウトApple のシステム API とフレームワークの活用また 検索パブ.dev。

リソースの共有

Flutter アプリとアプリ拡張機能の間でリソースを共有するには、次のように入力します。 のRunnerアプリターゲットと拡張機能ターゲットを同じ内に置くアプリグループ。

ターゲットをアプリ グループに追加するには:

  1. Xcodeでターゲット設定を開きます。
  2. に移動します。署名と機能タブ。
  3. 選択する+ 能力それからアプリグループ
  4. ターゲットを追加するアプリ グループを次の 2 つのオプションのいずれかから選択します。
    1. リストからアプリ グループを選択します。
    2. クリック+新しいアプリグループを追加します。

2 つのターゲットが同じアプリ グループに属している場合、それらは読み取りと書き込みが可能です データを同じソースに送信します。データの次のソースのいずれかを選択します。

  • キー/値:使用shared_preference_app_group読み書きするプラグインUserDefaults同じアプリグループ内。
  • ファイル:からのアプリ グループ コンテナー パスを使用します。path_providerプラグインからファイルの読み取りと書き込み
  • データベース:からのアプリ グループ コンテナー パスを使用します。 のpath_providerデータベースを作成するプラグインsqfliteプラグイン。

バックグラウンド更新

バックグラウンド タスクは、コードを通じて拡張機能を更新する手段を提供します アプリのステータスに関係なく。

Flutter アプリからバックグラウンド作業をスケジュールするには、workmanagerプラグイン。

ディープリンク

ユーザーをアプリ拡張機能から Flutter アプリ内の特定のページ。 アプリ内の指定されたルートを URL で開くには、次を使用できます。ディープリンク

Flutter を使用したアプリ拡張機能 UI の作成

一部のアプリ拡張機能にはユーザー インターフェイスが表示されます。 たとえば、iMessage 拡張機能を使用すると、ユーザーはアプリの から直接コンテンツをメッセージアプリ。

flutterは行いますいいえサポート アプリ拡張機能用の Flutter UI を構築します。 UIを作成するには Flutterを使用したアプリ拡張機能はコンパイルする必要があります カスタムエンジンを組み込んで、FlutterViewController次のセクションで説明するとおりです。

  1. の使用を削除した Flutter エンジンのカスタム ビルドを作成します。ce0af343-3ecd-4d6f-bf74-e21a065dcccbバンドルのパスを修正します。 をチェックしてくださいGitHub のコミュニティからの例。

  2. Xcode で Flutter アプリのプロジェクト設定を開いてビルドを共有します 構成。

    1. に移動します。情報タブ。
    2. を展開します。構成グループ。
    3. を展開します。デバッグプロフィール、 とリリースエントリ。
    4. これらの各構成について、設定ファイルに基づくドロップダウン メニュー 拡張子は、通常のアプリのターゲットに選択された拡張子と一致します。
  3. (オプション) 必要に応じて、ストーリーボード ファイルを拡張クラスに置き換えます。
    1. の中に情報plistファイルを削除しますNSExtensionMainストーリーボード財産。
    2. を追加します。NSExtensionPrincipalClass財産。
    3. このプロパティのこの値を、ViewController。 たとえば、iMessage 拡張機能では次のように使用します。MessageViewController
  4. を埋め込みますFlutterViewControllerで説明されているように flutterスクリーンの追加。たとえば、次のように表示できます。 iMessage 拡張機能内の Flutter アプリの特定のルート。

     //This attribute tells the compiler that this piece of Swift code can be accessed from Objective-C.
     @objc(MessagesViewController)
    
     class MessagesViewController: MSMessagesAppViewController {
         override func viewDidLoad() {
             super.viewDidLoad()
             showFlutter()
         }
        
         @objc func showFlutter() {
             // Create a FlutterViewController with an implicit FlutterEngine
             let flutterViewController = FlutterViewController(project: nil, initialRoute: "/ext", nibName: nil, bundle: nil)
             present(flutterViewController, animated: true, completion: nil)
         }
    
TO DO: 公開時にリンクを追加する